/*@author cerimice*/
package Persistencia.Fachada;

import Persistencia.Definicion.Cliente;

import java.util.logging.Logger;
import javax.persistence.Persistence;
import javax.persistence.EntityManager;

public class ClienteFachada
    {
     private EntityManager em;
    
    public ClienteFachada()
        {}
    
    private EntityManager getEntityManager()
        {return Persistence.createEntityManagerFactory(Sistema.Configuracion.getUnidadDePersistencia()).createEntityManager();}                
    
    public boolean agregar(String nombre, String paterno, String materno, String direccion, int estado, int municipio, String codigoPostal, String telefonoFijo, String telefonoMovil, String email) throws Exception
        {
        try
            {
            em = getEntityManager();
            em.getTransaction().begin();
                Cliente obj = new Cliente();
                obj.setNombre(nombre.toUpperCase());
                obj.setPaterno(paterno.toUpperCase());
                obj.setMaterno(materno.toUpperCase());
                obj.setDireccion(direccion.toUpperCase());
                obj.setEstado(estado);
                obj.setMunicipio(municipio);
                obj.setCodigoPostal(codigoPostal.toUpperCase());
                obj.setTelefonoFijo(telefonoFijo);
                obj.setTelefonoMovil(telefonoMovil);
                obj.setEmail(email);
            em.persist(obj);
            em.getTransaction().commit();
            em.close();
            return true;
            }
        catch(Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Sistema.Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public boolean modificar(String clave, String nombre, String paterno, String materno, String direccion, int estado, int municipio, String codigoPostal, String telefonoFijo, String telefonoMovil, String email) throws Exception
        {
        try
            {
            em = getEntityManager();
            em.getTransaction().begin();
                Cliente obj = em.find(Cliente.class,clave);
                if(obj == null){return false;}
                obj.setNombre(nombre.toUpperCase());
                obj.setPaterno(paterno.toUpperCase());
                obj.setMaterno(materno.toUpperCase());
                obj.setDireccion(direccion.toUpperCase());
                obj.setEstado(estado);
                obj.setMunicipio(municipio);
                obj.setCodigoPostal(codigoPostal.toUpperCase());
                obj.setTelefonoFijo(telefonoFijo);
                obj.setTelefonoMovil(telefonoMovil);
                obj.setEmail(email);
            em.persist(obj);
            em.getTransaction().commit();
            em.close();
            return true;
            }
        catch(Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Sistema.Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public Cliente obtener(String clave) throws Exception
        {
        try
            {
            em = getEntityManager();
            em.getTransaction().begin();
            Cliente obj = em.find(Cliente.class,clave);
            em.getTransaction().commit();
            em.close();
            return obj;
            }
        catch(Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Sistema.Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }    
    }
